iT邦幫忙

2024 iThome 鐵人賽

DAY 18
1
DevOps

探索亞馬遜雨林30天系列 第 18

Day 18: 透過AWS console部署golang程式到lambda

  • 分享至 

  • xImage
  •  

在順利長出lambda之後,如果想要部署一個golang程式到lambda,接下來可以怎麼做呢?首先需要撰寫程式,可以參考AWS官網上面給的範例,像下面簡單的hello範例。這邊要注意的是,在 AWS Lambda 中,lambda.Start是用來啟動Lambda函式,它會將指定的處理函式(HandleRequest)註冊為事件的處理器,HandleRequest負責處理傳入的事件並回傳結果,所以lambda.Start和處理函式缺一不可。

package main

import (
 "context"
 "fmt"

 "github.com/aws/aws-lambda-go/lambda"
)

type MyEvent struct {
 Name string `json:"name"`
}

func HandleRequest(ctx context.Context, event *MyEvent) (*string, error) {
 if event == nil {
  return nil, fmt.Errorf("received nil event")
 }
 message := fmt.Sprintf("Hello %s!", event.Name)
 return &message, nil
}

func main() {
 lambda.Start(HandleRequest)
}

寫好之後,下go的指令產生go.mod檔。

go mod init main

然後安裝aws的lambda套件。

go get github.com/aws/aws-lambda-go/lambda

接下來就可以開始build程式碼,這邊要特別注意,執行檔名稱一定要是bootstrap,另外可以用GOARCH參數指定CPU架構。

GOOS=linux GOARCH=arm64 go build -tags lambda.norpc -o bootstrap main.go

build好之後就可以打包成zip檔。

zip example.zip bootstrap

打包完就可以丟上去AWS了。

上傳成功後,可以用Test的功能測試一下能不能順利執行。

執行結果會直接顯示在Test頁面,但這個不會保留,要看之前的結果,要到Monitor查看。

執行完之後,會留下cloudwatch log,可以直接到cloudwatch查,也可以到Monitor那個tab,會列出cloudwatch log的紀錄。

Monitor那邊也有一些cloudwatch metrics可以讓你監控lambda現在的狀態,可以從這邊簡單的觀察lambda是不是有異常,例如Invocations次數是不是高於平均值,Success rate是不是過低。

把metrics放大,可以調整統計參數,像是統計的區間,統計的公式是要用Average或Minumum等等,以及要統計的資料區間。善用這些數字,可以協助發現異常。


上一篇
Day 17: 從0開始使用lambda
下一篇
Day 19: 如何使用AWS EventBridge並設定rule觸發lambda(上)
系列文
探索亞馬遜雨林30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言